package com.mini.cn.goods.servlet.ws.service;


import com.mini.cn.goods.io.netty.ws.WebSocketSession;
import com.mini.cn.goods.io.netty.ws.info.FastPushMsg;
import com.mini.cn.goods.io.netty.ws.info.PushMessage;

import java.util.List;

/**
 * Created with IntelliJ IDEA.

 * User: fly
 * Date: 2020-02-12
 * Time: 6:32 下午
 */

public interface IPushService {

    /**
     * @param in       入口统一模型
     * @param callback 推送结果的回调
     */
    void pushAllUser(PushMessage in, IPushResultCallback callback);

    /**
     * 极速全体推送
     *
     * @param fastPushMsg fast推送消息
     * @param callback    推送结果的回调
     */
    void pushAllUserFast(final FastPushMsg fastPushMsg, IPushResultCallback callback);

    /**
     * 极速全体并且分包
     * @param fastPushMsg
     * @param callback
     */
    void pushAllUserFastUnpack(FastPushMsg fastPushMsg, IPushResultCallback callback);


    /**
     * 发送给指定用户
     *
     * @param in       入口统一模型
     * @param callback 推送结果的回调
     */
    void pushUserByUserId(PushMessage in, IPushResultCallback callback);


    /**
     * 自有双工协议发送messge
     *
     * @param record 推送消息
     * @param session 推送用户的socket
     * @param callback 发送结果回调
     */
    void pushUserPushMessage(PushMessage record, WebSocketSession session, IPushResultCallback callback);

    /**
     * 自有双工协议发送多条消息
     *
     * @param records 推送消息
     * @param session 推送用户的socket
     * @param callback 发送结果回调
     */
    void pushUserPushMessageList(List<PushMessage> records, WebSocketSession session, IPushResultCallback callback);
}
